2 Laboratory performance
2.1 Load data
Load data previously compiled from the database:
all_data <- read_tsv("data/all_data.tsv") %>%
mutate(Taxon=factor(Taxon,levels=c("Amphibian",
"Reptile",
"Mammal",
"Bird",
"Control"))) %>%
mutate(Extraction=factor(Extraction,levels=c("ZYMO",
"DREX",
"EHEX"))) %>%
mutate(Species=factor(Species,levels=c("Calotriton asper",
"Lissotriton helveticus",
"Salamandra atra",
"Chalcides striatus",
"Natrix astreptophora",
"Podarcis muralis",
"Plecotus auritus",
"Sciurus carolinensis",
"Trichosurus vulpecula",
"Geospizopsis unicolor",
"Perisoreus infaustus",
"Zonotrichia capensis",
"Extraction control",
"Library control")))2.2 DNA yield
Total amount of DNA extracted from the 150 ul subset of the bead-beaten sample.
all_data %>%
select(Extraction,extract,Taxon) %>%
group_by(Taxon,Extraction) %>%
summarise(value = sprintf("%.0f±%.0f", mean(extract), sd(extract))) %>%
pivot_wider(names_from = Extraction, values_from = value) %>%
tt(caption = "Mean and standard deviation of total DNA nanograms")| Taxon | ZYMO | DREX | EHEX |
|---|---|---|---|
| Amphibian | 471±347 | 482±546 | 1733±1145 |
| Reptile | 102±68 | 162±128 | 250±171 |
| Mammal | 445±394 | 265±214 | 904±672 |
| Bird | 73±127 | 13±12 | 54±45 |
| Control | 0±0 | 2±3 | 1±0 |
all_data %>%
select(Library,Species,Extraction,extract,Taxon) %>%
unique() %>%
ggplot(aes(x=Extraction, y=extract, color=Species, group=Extraction))+
geom_boxplot(outlier.shape = NA, fill="#f4f4f4", color="#8c8c8c") +
geom_jitter() +
scale_color_manual(values=vertebrate_colors) +
facet_grid(. ~ Taxon, scales = "free") +
theme_minimal() +
labs(y="DNA yield (ng)",x="Extraction method")all_data %>%
filter(Taxon != "Control") %>%
lmerTest::lmer(extract ~ Extraction + (1 | Sample) + (1 | Species), data = ., REML = FALSE) %>%
broom.mixed::tidy() %>%
tt()| effect | group | term | estimate | std.error | statistic | df | p.value |
|---|---|---|---|---|---|---|---|
| fixed | NA | (Intercept) | 160.36395 | 125.49705 | 1.2778304 | 16.14808 | 2.193741e-01 |
| fixed | NA | ExtractionDREX | -39.65796 | 74.42689 | -0.5328445 | 153.24421 | 5.949131e-01 |
| fixed | NA | ExtractionEHEX | 580.62175 | 74.78157 | 7.7642359 | 153.30986 | 1.088065e-12 |
| ran_pars | Sample | sd__(Intercept) | 164.00812 | NA | NA | NA | NA |
| ran_pars | Species | sd__(Intercept) | 374.85139 | NA | NA | NA | NA |
| ran_pars | Residual | sd__Observation | 400.80106 | NA | NA | NA | NA |
DNA yields vary across host taxa. - Amphibians and mammals yield the highest total amounts of DNA. - Birds yield the lowest amounts of DNA. - Controls yield barely quantifiable DNA. EHEX yields highest amounts of total DNA. - DNA recovery raks of extraction methods are maintained across taxa.
2.3 Library performance
Number of PCR cycles required for reaching the plateau phase of the indexing PCR. A higher number indicates a lower amount of amplifiable library template. When weighed by the input DNA, the required number of PCR cycles serves as an estimator of library performance.
all_data %>%
group_by(Taxon,Extraction) %>%
summarise(value = sprintf("%.1f±%.1f", mean(pcr), sd(pcr))) %>%
pivot_wider(names_from = Extraction, values_from = value) %>%
tt(caption = "Mean and standard deviation of optimal number of PCR cycles")| Taxon | ZYMO | DREX | EHEX |
|---|---|---|---|
| Amphibian | 14.3±1.6 | 10.7±2.9 | 10.7±2.3 |
| Reptile | 11.7±4.0 | 10.3±3.5 | 12.0±3.3 |
| Mammal | 11.1±3.5 | 9.9±1.9 | 10.0±2.1 |
| Bird | 17.6±2.8 | 18.7±4.3 | 14.4±2.3 |
| Control | 20.0±2.8 | 19.8±0.5 | 22.0±4.2 |
all_data %>%
select(Library,Species,Extraction,pcr,Taxon) %>%
unique() %>%
ggplot(aes(x=Extraction,y=pcr, color=Species, group=Extraction))+
scale_y_reverse() +
geom_boxplot(outlier.shape = NA, fill="#f4f4f4", color="#8c8c8c") +
geom_jitter() +
scale_color_manual(values=vertebrate_colors) +
facet_grid(. ~ Taxon, scales = "free") +
theme_minimal() +
labs(y="Optimal number of PCR cycles",x="Extraction method")all_data %>%
filter(Taxon != "Control") %>%
lmerTest::lmer(pcr ~ Extraction + (1 | Sample) + (1 | Species), data = ., REML = FALSE) %>%
broom.mixed::tidy() %>%
tt()| effect | group | term | estimate | std.error | statistic | df | p.value |
|---|---|---|---|---|---|---|---|
| fixed | NA | (Intercept) | 13.862035 | 0.8648942 | 16.027435 | 14.90821 | 8.328452e-11 |
| fixed | NA | ExtractionDREX | -1.568966 | 0.5106532 | -3.072468 | 150.76244 | 2.519836e-03 |
| fixed | NA | ExtractionEHEX | -2.091261 | 0.5130831 | -4.075872 | 150.84234 | 7.389947e-05 |
| ran_pars | Sample | sd__(Intercept) | 1.068964 | NA | NA | NA | NA |
| ran_pars | Species | sd__(Intercept) | 2.599229 | NA | NA | NA | NA |
| ran_pars | Residual | sd__Observation | 2.749952 | NA | NA | NA | NA |